#pragma once

#pragma managed

#include "..\BWAPI\Unit.h"
#include "..\BWTA\BaseLocation.h"

using namespace BroodWar::Api;
using namespace BroodWar::Api::Enum;
using namespace BroodWar::Terrain;

namespace BroodWar
{
	namespace Addon
	{
		public interface class IInformationManager
		{
			void OnUnitDiscover(Unit^ unit);
			void OnUnitEvade(Unit^ unit);
			void OnUnitDestroy(Unit^ unit);
			Player^ GetPlayer(Unit^ unit);
			Api::UnitType^ GetType(Unit^ unit);
			Position^ GetLastPosition(Unit^ unit);
			int GetLastSeenTime(Unit^ unit);
			bool Exists(Unit^ unit);
			bool EnemyHasBuilt(Api::Enum::UnitType type);
			int GetBuildTime(Api::Enum::UnitType type);
			property HashSet<BaseLocation^>^ EnemyBases { HashSet<BaseLocation^>^ get(); };
			void SetBaseEmpty(BaseLocation^ base);
		};
	}
}
